﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SSSGame.Physics
{
    public static class Tools
    {
        public const int ORIENTATION_HORAIRE = -1;
        public const int ORIENTATION_RETROGRADE = 1;

        // Détection de mouvement
        public const int PROPULSTION_ACTIVE = 1;
        public const int RETROPROPULSTION_ACTIVE = 2;
        public const int ROTATION_HORAIRE_ACTIVE = 3;
        public const int ROTATION_RETROGRADE_ACTIVE = 4;

        public const int QUITTER = 5;

        public const int ECRASERLOG = 6;

        public static double ArrondirValeurNulle(double uneValeur)
        {
            if (Math.Abs(uneValeur) < 10E-5)
            {
                return 0.0;
            }
            else
                return uneValeur;
        }

        public static float ArrondirValeurNulle(float uneValeur)
        {
            return (float)Tools.ArrondirValeurNulle((double)uneValeur);
        }

        public static float HarmoniserAngle(float uneValeur)
        {
            // Si l'angle passé est supérieur à 2PI, on ne conserve que le modulo
            if (uneValeur > Math.PI * 2)
            {
                return MathExtensions.IEEERemainder(uneValeur, (Math.PI * 2));
            }
            // Si l'angle passé est inférieur à 0, on le converti en angle "retrograde"
            else if (uneValeur < 0)
            {
                return (MathExtensions.PI * 2) + uneValeur;
            }
            else
                return uneValeur;
        }

    }
}
